import request from "@/utils/request";

const SUBJECTINFO_BASE_URL = "/wz/exam/subject_info";

class SubjectInfoAPI {
  /** 获取科目表分页数据 */
  static getPage(queryParams?: SubjectInfoPageQuery) {
    return request<any, PageResult<SubjectInfoPageVO[]>>({
      url: `${SUBJECTINFO_BASE_URL}/page`,
      method: "get",
      params: queryParams,
    });
  }

  /** 获取科目列表数据 */
  static getList(queryParams?: SubjectInfoPageVO) {
    return request<any, SubjectInfoPageVO[]>({
      url: `${SUBJECTINFO_BASE_URL}/list`,
      method: "get",
      params: queryParams,
    });
  }

  /**
   * 获取科目表表单数据
   *
   * @param id SubjectInfoID
   * @returns SubjectInfo表单数据
   */
  static getFormData(id: number) {
    return request<any, SubjectInfoForm>({
      url: `${SUBJECTINFO_BASE_URL}/detail?id=` + id,
      method: "get",
    });
  }

  /** 添加科目表*/
  static add(data: SubjectInfoForm) {
    return request({
      url: `${SUBJECTINFO_BASE_URL}/save`,
      method: "post",
      data: data,
    });
  }

  /**
   * 更新科目表
   *
   * @param id SubjectInfoID
   * @param data SubjectInfo表单数据
   */
  static update(data: SubjectInfoForm) {
    return request({
      url: `${SUBJECTINFO_BASE_URL}/update`,
      method: "put",
      data: data,
    });
  }

  /**
   * 批量删除科目表，多个以英文逗号(,)分割
   *
   * @param ids 科目表ID字符串，多个以英文逗号(,)分割
   */
  static deleteByIds(ids: string) {
    return request({
      url: `${SUBJECTINFO_BASE_URL}/remove?ids=` + ids,
      method: "delete",
    });
  }
}

export default SubjectInfoAPI;

/** 科目表分页查询参数 */
export interface SubjectInfoPageQuery extends PageQuery {
  name?: string;
  /** 阶段（1 小学 2. 初中 3. 高中) */
  school_type?: number;
  /** 所属年级id */
  grade_info_id?: number;
}

/** 科目表表单对象 */
export interface SubjectInfoForm {
  name?: string;
  /** 阶段（1 小学 2. 初中 3. 高中) */
  school_type?: number;
  /** 所属年级id */
  grade_info_id?: number;
}

/** 科目表分页对象 */
export interface SubjectInfoPageVO {
  name?: string;
  /** 阶段（1 小学 2. 初中 3. 高中) */
  school_type?: number;
  /** 所属年级id */
  grade_info_id?: number;
  create_date?: string;
}
